package com.cls.business.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.cls.common.entity.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * 申报课题表 Entity
 *
 * @author weimaomao
 * @date 2020-11-10 11:09:57
 */
@Data
@TableName("biz_declare_topic")
public class DeclareTopic extends BaseEntity implements Serializable {


    /**
     *
     */
    @TableId(value = "declare_id", type = IdType.AUTO)
    private Long declareId;


    @TableField(value = "is_finish")
    private Boolean isFinish;

    /**
     * 发布结项通知书
     */
    @TableField(value = "is_item_publish")
    private Boolean isItemPublish;

    /**
     * 申报课题名称
     */
    @TableField("name")
    private String name;

    /**
     * 申报课题名称
     */
    @TableField("code")
    private String code;
    /**
     * 申报课题类型（年报，委托）
     */
    @TableField("topic_classify_code")
    private String topicClassifyCode;

    /**
     * 课题级别
     */
    @TableField("level_type_code")
    private String levelTypeCode;

    /**
     * 最终级别
     */
    @TableField("final_level_type_code")
    private String finalLevelTypeCode;


    /**
     * 课题编号
     */
    @TableField("topic_code")
    private String topicCode;

    /**
     * 课题编号
     */
    @TableField("topic_id")
    private Long topicId;


    /**
     * 申请课题状态
     */
    @TableField("status_type_code")
    private String statusTypeCode;


    /**
     * 总分
     */
    @TableField("score")
    private Double score;


    /**
     * 申报方式
     */
    @TableField("declare_type_code")
    private String declareTypeCode;


    /**
     * 申请人id
     */
    @TableField("applicant_id")
    private Long applicantId;


    /**
     * 主持人名称
     */
    @TableField("leader_name")
    private String leaderName;


    /**
     * 学科分类
     */
    @TableField("subject_type_code")
    private String subjectTypeCode;


    /**
     * 校验后学科
     */
    @TableField("check_subject_type_code")
    private String checkSubjectTypeCode;


    /**
     * 主要观点
     */
    @TableField("main_point")
    private String mainPoint;


    /**
     * 拟立项申请表附件id
     */
    @TableField("apply_file_id")
    private Long applyFileId;

    /**
     * 附件id
     */
    @TableField("pre_item_file_id")
    private Long preItemFileId;


    /**
     * 成果形式
     */
    @TableField("achievement_form_type_code")
    private String achievementFormTypeCode;


    /**
     * 成果字数
     */
    @TableField("achievement_form_size")
    private Double achievementFormSize;


    /**
     * 研究类型
     */
    @TableField("research_type_code")
    private String researchTypeCode;


    /**
     * 研究内容
     */
    @TableField("research_content")
    private String researchContent;


    /**
     * 成员近三年研究成果
     */
    @TableField("member_works3")
    private String memberWorks3;

    /**
     * 主持人近五年研究成果
     */
    @TableField("leader_works5")
    private String leaderWorks5;

    @TableField("auto_check_result")
    private String autoCheckResult;

    @TableField("check_result")
    private String checkResult;

    @TableField("apply_count")
    private Integer applyCount;
    /**
     * 立项编号
     */
    @TableField("item_code")
    private String itemCode;

    /**
     * 立项通知书
     */
    @TableField("item_file_id")
    private Long itemFileId;


    /**
     * 显名文件
     */
    @TableField("normal_file_id")
    private Long normalFileId;

    /**
     * 下一次最晚提交时间
     */
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @TableField("latest_apply_time")
    private Date latestApplyTime;

    /**
     * 匿名文件
     */
    @TableField("anonymous_file_id")
    private Long anonymousFileId;


    @TableField(exist = false)
    private List<String> statusTypeCodes;

    @TableField(exist = false)
    private String planStatusTypeCode;

    @TableField(exist = false)
    private Long expertId;

    @TableField(exist = false)
    private String yearSearch;

    @TableField(exist = false)
    private String year;

    @TableField(exist = false)
    private String topicName;

    @TableField(exist = false)
    private Long reviewId;

    @TableField(value = "is_submit")
    private Boolean isSubmit;

    @TableField(exist = false)
    private String changeCompany;

    @TableField(exist = false)
    private String finalLevelTypeVal;

    @TableField(exist = false)
    private String parentFinalLevelTypeCode;

    @TableField(exist = false)
    private Long delayApplyId;

    /**
     * 用于前端传参
     */
    @TableField(exist = false)
    private Long topicPlanId;

    /**
     * 期次
     */
    @TableField(exist = false)
    private String period;


    @TableField(exist = false)
    private String planNo;

    @TableField(exist = false)
    private Boolean isPreItemNotice;

    @TableField(exist = false)
    private Long userId;

    @TableField(exist = false)
    private String finalLevelType;

    @TableField(exist = false)
    private String statusCode;

    @TableField(exist = false)
    private Long planId;

    @TableField(exist = false)
    private String businessType;

    @TableField(exist = false)
    private boolean isReviewForExpert;
}
